home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Topik / Topik - Disk 36 - Archivers (19xx)(Topik Public Domain)(PD)[WB].zip / Topik - Disk 36 - Archivers (19xx)(Topik Public Domain)(PD)[WB].adf / LZ / LZ.doc < prev    next >
Text File  |  1990-10-07  |  12KB  |  263 lines

  1.  
  2. *** TOPIK Note : There's a few problems with this program when run on an
  3.  *  Amiga 2500 which may be the same for large similar systems, which
  4.  *  can be simply fixed by raising the stack real high....like perhaps
  5.     typing STACK 100000 in the CLI, that should do it, but if there is
  6.     still a problem, then raise it higher perhaps.
  7.     LZ is in this directory, accessible from the CLI/SHELL. Rob.
  8.  
  9.  
  10.                                    LZ 0.82 BETA
  11.                                   30th June, 1990
  12.  
  13.                             Written by Jonathan Forbes
  14.                        Copyright © 1990, Xenomiga Technology
  15.  
  16.  
  17.    About LZ
  18.  
  19.    LZ is NOT freeware; if you use it and like it, please send a shareware
  20. registration of $10 (Cdn.$ or U.S.$) to the address given below.  If you send
  21. $25 and your address, you will receive the full source code to LZ on a disk.
  22. Send contributions to:
  23.  
  24.    Xenomiga Technology
  25.    1132 Bay Street, Suite #1101
  26.    Toronto, Ontario
  27.    M5S 2Z4
  28.    Canada
  29.  
  30.  
  31.    Distribution
  32.  
  33.    LZ is a freely distributable, copyrighted piece of software.  You may
  34. upload it wherever you choose, but you are not allowed to sell LZ for profit,
  35. or include LZ on a disk which is sold for profit, without the author's
  36. (Jonathan Forbes) permission.
  37.  
  38.    The LZ package (LZ081.LZH) consists of two files; LZ, and LZ.doc, neither
  39. of which may be modified in any way.  However, LZ081.LZH may be recompressed
  40. with another archiver such as Zoo, Zip (ugh), etc.
  41.  
  42.    And, as mentioned above, LZ is shareware.
  43.  
  44.  
  45.    Disclaimer
  46.  
  47.    I am in no way responsible for anything this program does; you are using it
  48. entirely at your own risk!  This is especially true for this 0.82 beta version.
  49. If you don't want to take any risks, then *don't* use it!
  50.  
  51.  
  52.    What is Lz?
  53.  
  54.    Lz (which I pronounce "el zed", but which you will probably pronounce
  55. "el zee") is the fastest .LZH archiver and extractor available for the Amiga!
  56. Lz is compatible with MS-DOS version 1.13c of Lharc and Amiga Lharc 1.0.
  57.  
  58.  
  59.    Acknowledgements
  60.  
  61.    The original Lharc (MS-DOS) was written by Haruyasu Yoshizaki.  I took his
  62. freely distributable source code "lzhuf.c", and rewrote it in assembly
  63. language.  I used "lharc.c" (which is full of MS-DOS specific code) as a
  64. reference, but did not use it as a base for the Amiga version, which I wrote
  65. from scratch.
  66.  
  67.    For testing purposes, I used Amiga Lharc 1.0, ported by Paolo Zibetti.
  68.  
  69.  
  70.    How fast is Lz?
  71.  
  72.    Lightning fast.  If you've been using Lharc to compress or decompress files,
  73. then you're in for a big surprise.  If you've been using Lhunarc 0.96 (also
  74. written by me), and thought that was fast, then prepare yourself for some major
  75. speed increases, because Lz is faster still!  Lz is between 16% and 25% faster
  76. than Lhunarc 0.96, and that's no joke in terms of speed!
  77.  
  78.    I have pushed the decompression algorithm almost to its limits.  No other
  79. .LZH extractor can even come -close- to Lz's decompression times.  Things
  80. simply can't get much faster.  Yes, I know I said that in the Lhunarc 0.96
  81. documentation too, but this time I'm pretty sure I'm almost at the limit!
  82.  
  83.    Here follows a small speed comparison.  The files being compressed and
  84. decompressed were those on Fred Fish disk #245.
  85.  
  86.                       * - Different algorithm/encoding scheme
  87.  
  88.                                            *        *
  89.              | (0.82)  | (1.0) | (.99d) | (1.01) | (1.40)
  90.              |   LZ    | Lharc | LharcA | PkaZip | Lhwarp
  91. Fish245.LZH  |  11:33  | 26:29 |    ?   |  10:31 |  13:43  <-- compressing
  92.              |   1:47  |  5:12 |   2:34 |   2:53 |   2:51  <-- decompressing
  93.  
  94.    LZ certainly kills everything else dead, but is it faster than PkaZip?
  95. Well, sometimes it is, but usually it isn't.  However, LZ (and Lharc, etc.)
  96. almost always compresses files better than Zip.  For example, "MegRyan.lzh"
  97. (a complete 655k digitised sound sample of the famous restaurant scene from
  98. When Harry Met Sally), compresses from 655302 bytes to 488679 when LZ is used,
  99. while the equivalent .zip file is 536773 bytes long.  LZ compresses the file
  100. faster than Zip, too.
  101.  
  102.    Anyway, enough of .lzh vs. .zip for now... it's up to you.
  103.  
  104.  
  105.    A Beta Version?
  106.  
  107.    Yes, this version is LZ 0.82 BETA.  Just over 80% of it has been done (how
  108. I came up with that figure I'll never know.)
  109.  
  110.    LZ has not been tested to exhaustion.  It compresses and decompresses files
  111. fine (and is far more intelligent than Lhunarc 0.96), but there's always the
  112. possibility of a bug or two remaining (although I seriously doubt there are
  113. any -dangerous- bugs remaining; i.e. bugs which produce corrupted archives.)
  114.  
  115.    Anyway, the practical upshot of all this is that if you want to play it safe,
  116. then use LZ only for decompressing; the algorithm has been sitting in Lhunarc
  117. 0.96 for months now, without any problems, and any bugs will show up as CRC
  118. errors.  Most people don't compress that many files, anyway.
  119.  
  120.    (Note:  I'm not saying the compression algorithm is buggy; just that it
  121. isn't as mature as the decompression algorithm.)
  122.  
  123.    LZ does not yet have all of its options implemented; the commands not
  124. implemented are: move, freshen, update, and fix (the latter is a nonstandard
  125. Lharc command which will rebuild corrupted archives.)  I've never used any
  126. of these commands before, anyway, so hopefully, most of you won't miss them.
  127.  
  128.    A quick summary of the implemented commands:
  129.  
  130.    a    Add file(s) to archive.  Wildcards accepted.
  131.  
  132.    e,x  Extract file(s) from archive.  If any filenames follow the archive name
  133.         then only those files will be extracted.  Wildcards are permitted.  If
  134.         any of the filenames have a '/' or ':' as the ultimate character, then
  135.         that directory will be used as the destination directory.  E.g.:
  136.  
  137.         Lz -x fish245.lzh generalinfo.info dh3:fishdir/ atof/atof vlt/.info
  138.  
  139.         will extract generalinfo.info, atof/atof, and vlt/.info to dh3:fishdir/
  140.  
  141.    l,v  View archive contents.
  142.  
  143.    d    Delete file(s) from archive.  Wildcards accepted.  To delete all .foo
  144.         files from all your .lzh files, type:  Lz d #? #?.foo
  145.  
  146.         Please note that items in subdirectories are also checked, so that
  147.         #?.info will delete *all* .info files in the archiver, wherever they
  148.         may be.
  149.  
  150.    When creating archives, individual files are compressed in the work
  151. directory, which defaults to T: if it exists or the current directory
  152. otherwise.  The work directory can be changed with the -w option.
  153.  
  154.    Like Lharc, LZ uses the decimal address of its task structure for creating
  155. temporary filenames, so that multiple copies can run simultaneously without
  156. conflict (and no, LZ is not reentrant; I *like* global variables.)
  157.  
  158.    What do the options do?  Well, first of all, if you're not familiar with
  159. Lharc by Paolo Zibetti, read his Lharc documentation files; I've tried to
  160. remain as compatible as possible with Amiga Lharc 1.0.  I'll write the
  161. documentation for LZ later on; I'm too busy right now.
  162.  
  163.    It is important to remember the behaviour of the -a (preserve file
  164. attributes) command; if this is not specified, then all files archived or
  165. extracted will be "rwed."  If this flag is used, then all attributes (rwedsaph)
  166. will be preserved.  When extracting, use -a only on files which have been
  167. compressed by Amiga .lzh archivers; if you don't, you'll end up with files with
  168. strange attributes (although no harm will be done.)  Similarly, if you know
  169. that your archive might be extracted on an IBM system, don't use the -a option,
  170. because they'll have similar problems.
  171.  
  172.    Here follows a quick reminder of how to archive subdirectories recursively:
  173.  
  174.    Lz -x -r a myarchive.lzh blah/#?
  175.  
  176.    Will archive everything (subdirectories and all) in blah/.  If you don't
  177. wish to archive subdirectories, then it's just Lz -x a myarchive.lzh blah/#?
  178. (which will still preserve the path name.)
  179.  
  180.    Options which I have added are:
  181.  
  182.    -c   confirm filenames; will prompt you with yes/no/all/quit for every
  183.         file to be added to or extracted from an archive.  Useful in
  184.         conjunction with wildcards.
  185.  
  186.    -i   set input buffer size to the number immediately following the option.
  187.         For example, -i32768 would give you a 32k input buffer.  Changing the
  188.         input or output buffer size on an 68000 Amiga when all work is being
  189.         done in a RAM drive doesn't speed things up; these options are mainly
  190.         for floppy drive users and 68020-68040 users.
  191.  
  192.    -o   ditto for the output buffer.  Both input and output buffers default
  193.         to 8192 (8k) bytes.  However, twice as much memory as specified is
  194.         allocated for the output buffer; this is because LZ originally wrote
  195.         data asynchrously until I found out that this doesn't speed things up
  196.         on a RAM drive.  It probably speeds things up on a floppy drive,
  197.         however, so I left the dual buffers in.  This version of LZ does NOT
  198.         write asynchrously, however; the extra output buffer just takes up
  199.         memory, for now.
  200.  
  201.    -z   zero compression; just store files in the archive.
  202.  
  203.    -Z   conditional zero compression; don't attempt to compress files ending
  204.         in .lzh, .lhw, .zip, .zoo, .arc, .pak, .wrp or .zap.  Useful for
  205.         compressing disks which already have archives on them.
  206.  
  207.    LZ saves and restores files to their proper dates and attributes, unlike
  208. Lhunarc.
  209.  
  210.    If you find yourself using certain options with LZ most of the time, you
  211. might want to make them an alias.  For example:
  212.  
  213.    alias lx lz -i32768 -o32768 -x []
  214.  
  215.    would make a new command called "LX" which would extract files with a 32k
  216. buffer.  Or, if you still find yourself typing "Lhunarc" all the time:
  217.  
  218.    alias lhunarc lz -i32768 -o32768 -x []
  219.  
  220.    The above two commands work only with shells which support aliases.  Your
  221. shell might have a different way of doing it; I use AmigaDOS 1.3 and Arp 1.3.
  222. The arp.library is required for LZ, by the way.
  223.  
  224.    So why am I releasing an incomplete, not fully tested version?  The reason
  225. is that I'm leaving for Winnipeg, Manitoba in two days, and that's where I'll
  226. be for the next month, at the Shad Valley programme.  I'm releasing this
  227. program, in part, to update Lhunarc 0.96.  I also don't want any other .lzh
  228. archiver to appear while I'm gone and render Lhunarc obselete; LharcA lags
  229. far far behind both Lhunarc and Lz, but it might get within 15%.  Lhunarc also
  230. had a couple of bugs (both were inconsequential; it couldn't handle certain
  231. combinations of deeply nested directories, and it created directories in view
  232. mode) which LZ fixes.
  233.  
  234.    Besides, I want this program to get around so that people will have compiled
  235. lots of revealing benchmarks by the time I get back ;-)  No one seems to have
  236. done this yet!
  237.  
  238.    Anyway, remember that this is a PRE-RELEASE of LZ, and it may contain a
  239. small bug or two.  I'll be gone from the 1st of July until the 28th, so you'll
  240. have to save your suggestions and criticisms for then.
  241.  
  242.    Thanks to Steve Tibbett for showing me how to speed up Lhunarc 0.96 by 3%
  243. (every percent counts), how to produce smaller executables using RawDoFmt() and
  244. __tinymain, for finding the bug in the view command, for sending me Raw() and
  245. Cooked(), and for informing me that the A3000 spends more time doing disk i/o
  246. than it does decompressing (hence a user configurable buffer.)
  247.  
  248.    I'll have another version of Lhwarp out in two months or so, which may or
  249. may not use Yoshi's new Lharc algorithm which is currently undergoing beta
  250. testing at version 1.90; it produces smaller files than the existing Lharc,
  251. and is quicker to boot.
  252.  
  253.    As an aside; thanks to all those who helped get Lhwarp off the ground to
  254. stable versions 1.30/1.31 and 1.40; if it weren't for Lhwarp, neither Lhunarc
  255. nor LZ would exist.  A big *HI* to Rob Collinsworth; thanks for all your
  256. invaluable help when I most needed it!
  257.  
  258.    Please excuse this document's complete lack of style and organisation;
  259. because it was done at the last minute, I didn't have the time to refine every
  260. sentence like I usually do.
  261.  
  262. --- EOF
  263.